#pragma once

#include "Sock.hpp"
#include <poll.h>

#define FD_CAPACITY 10    // 最多可以处理的文件描述符数量
#define SIZE 1024         // 缓冲区大小
const int g_none_fd = -1; // 空状态下的文件描述符

class PollServer
{
public:
    PollServer(uint16_t port, const std::string& ip = "");    // 构造函数
    void start();      // 初始化运行函数

private: 
    void PollServerHandler();     // 处理就绪文件描述符函数
    void Accepter(int listenfd);  // 获取新链接函数
    void Reciever(int pos);      // 从客户端读取数据函数
    void CheckFdArray();          // 打印检查fd_arra -- DEBUG

    int _listenSock;   // listen文件描述符
    uint16_t _port;    // 服务器程序端口号
    std::string _ip;   // 可以接收连接的ip地址
    struct pollfd* _fd_array;   // fd序列，用于存储关注的fd
};